Component এবং পেজ ইন্টারঅ্যাকশন

Web Development - অ্যাপাচি ট্যাপেস্ট্রি (Apache Tapestry) - Tapestry এর Event-Driven Programming |

Apache Tapestry একটি component-based framework, যেখানে UI উপাদানগুলোকে স্বাধীন কম্পোনেন্ট হিসেবে তৈরি করা হয় এবং তারা একে অপরের সাথে ইন্টারঅ্যাক্ট করে। কম্পোনেন্ট এবং পেজের মধ্যে ইন্টারঅ্যাকশন টেপেস্ট্রি অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ দিক, যেখানে কম্পোনেন্টগুলি ডেটা শেয়ার করতে, ইভেন্ট ট্রিগার করতে এবং পেজের মধ্যে ডায়নামিক ইনফরমেশন পরিবর্তন করতে ব্যবহৃত হয়।

এই টিউটোরিয়ালে, আমরা কীভাবে কম্পোনেন্ট এবং পেজ এর মধ্যে ইন্টারঅ্যাকশন করতে হয় এবং তাদের মধ্যে ডেটা ও ইভেন্ট শেয়ার করা যায়, তা বিস্তারিতভাবে দেখব।


কম্পোনেন্ট এবং পেজ ইন্টারঅ্যাকশন

১. কম্পোনেন্ট তৈরি এবং পেজের সাথে ইন্টারঅ্যাকশন

Tapestry কম্পোনেন্টগুলি স্বতন্ত্র UI উপাদান (যেমন, টেক্সটফিল্ড, বাটন, ড্রপডাউন) হিসেবে কাজ করে, এবং এগুলি পেজের সাথে ডেটা বা ইভেন্ট শেয়ার করতে পারে। কম্পোনেন্ট এবং পেজের মধ্যে ইন্টারঅ্যাকশন প্রধানত ডেটা বাউন্ডিং এবং ইভেন্ট হ্যান্ডলিংয়ের মাধ্যমে ঘটে।

উদাহরণ: কম্পোনেন্ট তৈরি এবং পেজের সাথে ইন্টারঅ্যাকশন

ধরা যাক, আপনি একটি UserForm নামের কম্পোনেন্ট তৈরি করতে চান যা ব্যবহারকারীর নাম এবং ইমেইল গ্রহণ করবে এবং পেজে সেই তথ্য প্রদর্শন করবে।

১.1. কম্পোনেন্ট তৈরি (UserForm.java)
package com.example.components;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Parameter;

public class UserForm {

    @Property
    private String userName;  // User input for username

    @Property
    private String userEmail;  // User input for email

    // Method to pass data back to parent page (if needed)
    public void onSuccess() {
        // You can add logic here to process or send data to the parent page
    }
}
  • @Property: এই অ্যানোটেশন ব্যবহার করে userName এবং userEmail ফিল্ডগুলির মান পেজের সঙ্গে বাইনড করা হবে।
  • onSuccess(): ফর্ম সফলভাবে সাবমিট হলে এই মেথডটি কল হবে, এবং এখানে আপনি ডেটা প্রক্রিয়া বা পেজে পাঠাতে পারেন।
১.2. কম্পোনেন্ট টেমপ্লেট (userform.tml)
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>User Form</title>
    </head>
    <body>
        <form>
            <t:label value="Username" for="userName"/>
            <t:textfield t:id="userName" value="userName"/>

            <t:label value="Email" for="userEmail"/>
            <t:textfield t:id="userEmail" value="userEmail"/>

            <t:button t:id="submitButton" value="Submit" />
        </form>
    </body>
</html>
  • t:textfield: এই কম্পোনেন্টটি ইনপুট ফিল্ড তৈরি করে।
  • t:button: এটি একটি বাটন তৈরি করে যা ফর্ম সাবমিট করার জন্য ব্যবহৃত হয়।
১.3. পেজের সাথে কম্পোনেন্ট ইন্টারঅ্যাকশন

এখন, UserForm কম্পোনেন্টটি একটি পেজের মধ্যে ব্যবহার করা হবে। এখানে পেজটি ব্যবহারকারীর নাম এবং ইমেইল তথ্য প্রদর্শন করবে।

১.4. পেজ তৈরি (UserPage.java)
package com.example.pages;

import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.Property;

public class UserPage {

    @Property
    private String userName;  // User's name

    @Property
    private String userEmail;  // User's email

    // Method to be called when the UserForm component's form is successfully submitted
    public void onSuccessFromUserForm() {
        // After form submission, you can use the data and take necessary actions.
    }
}
  • @Property: এই অ্যানোটেশন ব্যবহার করে userName এবং userEmail ফিল্ডগুলি পেজের সাথে বাইনড করা হয়।
১.5. পেজ টেমপ্লেট (userpage.tml)
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>User Page</title>
    </head>
    <body>
        <h2>Welcome, <t:property value="userName"/>!</h2>
        <h3>Your email: <t:property value="userEmail"/></h3>

        <t:include page="UserForm" />
    </body>
</html>
  • <t:property value="userName"/>: এটি userName প্রপার্টির মান প্রদর্শন করবে, যা কম্পোনেন্ট থেকে পেজে প্রেরিত হবে।
  • <t:include page="UserForm"/>: এই কম্পোনেন্টটি পেজের মধ্যে UserForm কম্পোনেন্ট অন্তর্ভুক্ত করবে।

ধাপ ২: ইভেন্ট ট্রিগার এবং হ্যান্ডলিং

Tapestry তে ইভেন্ট ট্রিগার এবং হ্যান্ডলিং খুবই গুরুত্বপূর্ণ। কম্পোনেন্টে ইভেন্ট ট্রিগার করার জন্য এবং পেজে সেই ইভেন্ট হ্যান্ডল করার জন্য বিশেষ কিছু অ্যানোটেশন এবং পদ্ধতি রয়েছে।

উদাহরণ: ইভেন্ট হ্যান্ডলিং

ধরা যাক, একটি SubmitButton কম্পোনেন্ট তৈরি করতে চান, যা একটি সাবমিট বাটন ক্লিকের মাধ্যমে একটি ইভেন্ট ট্রিগার করবে এবং পেজে সেই ইভেন্ট হ্যান্ডল হবে।

২.1. কম্পোনেন্ট (SubmitButton.java)
package com.example.components;

import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Property;

public class SubmitButton {

    @Property
    private String message;

    // Event handler for the submit event
    @OnEvent("submit")
    public String onSubmit() {
        return "Form submitted successfully!";
    }
}
  • @OnEvent: এটি কম্পোনেন্টের ইভেন্ট হ্যান্ডলিং অ্যানোটেশন। এখানে "submit" ইভেন্ট ট্রিগার হলে onSubmit() মেথডটি কল হবে।
২.2. পেজ (SubmitPage.java)
package com.example.pages;

import org.apache.tapestry5.annotations.Property;

public class SubmitPage {

    @Property
    private String message;

    // Method to capture the message from the SubmitButton component
    public void onSuccessFromSubmitButton() {
        message = "Form has been successfully processed!";
    }
}
  • onSuccessFromSubmitButton(): এটি SubmitButton কম্পোনেন্টের সফল ইভেন্টের পর কল হবে এবং এটি পেজের মেসেজ আপডেট করবে।
২.3. পেজ টেমপ্লেট (submitpage.tml)
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Submit Page</title>
    </head>
    <body>
        <h2>Submit Form</h2>
        <t:form>
            <t:submitButton t:id="submitButton"/>
        </t:form>

        <h3>Message: <t:property value="message"/></h3>
    </body>
</html>
  • <t:submitButton />: এটি SubmitButton কম্পোনেন্টকে অন্তর্ভুক্ত করবে এবং submit ইভেন্ট ট্রিগার করবে।
  • <t:property value="message"/>: এটি SubmitPage পেজ থেকে মেসেজ প্রদর্শন করবে।

সারাংশ

Tapestry-তে কম্পোনেন্ট এবং পেজ ইন্টারঅ্যাকশন একটি গুরুত্বপূর্ণ অংশ। কম্পোনেন্টের মধ্যে ডেটা বা ইভেন্ট শেয়ার করার জন্য ডেটা বাউন্ডিং এবং ইভেন্ট হ্যান্ডলিং ব্যবহৃত হয়। Tapestry-তে কম্পোনেন্ট তৈরি করা, পেজে কম্পোনেন্ট ইন্টিগ্রেট করা, এবং ইভেন্ট ট্রিগার ও হ্যান্ডলিংয়ের মাধ্যমে কম্পোনেন্ট এবং পেজের মধ্যে কার্যকর ইন্টারঅ্যাকশন করা যায়। এই প্রক্রিয়াগুলির মাধ্যমে আপনার অ্যাপ্লিকেশনটি আরও ডায়নামিক এবং ইন্টারঅ্যাকটিভ হতে পারে।

Content added By
Promotion